package com.carrental.vehicle.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.carrental.vehicle.dto.ImageCollectionDTO;
import com.carrental.vehicle.entity.Image;
import com.carrental.vehicle.entity.ImageCollection;

import java.util.List;

/**
 * 图片集合服务接口
 */
public interface ImageCollectionService extends IService<ImageCollection> {

    /**
     * 分页查询图片集合
     * 
     * @param current 当前页
     * @param size 每页大小
     * @param name 图片集名称（可选）
     * @param categoryId 分类ID（可选）
     * @return 分页结果
     */
    IPage<ImageCollection> pageList(Integer current, Integer size, String name, Long categoryId);
    
    /**
     * 新增图片集合
     * 
     * @param imageCollection 图片集合信息
     * @return 是否成功
     */
    boolean addCollection(ImageCollection imageCollection);
    
    /**
     * 修改图片集合
     * 
     * @param imageCollection 图片集合信息
     * @return 是否成功
     */
    boolean updateCollection(ImageCollection imageCollection);
    
    /**
     * 删除图片集合
     * 
     * @param id 图片集合ID
     * @return 是否成功
     */
    boolean deleteCollection(Long id);
    
    /**
     * 修改图片集合状态
     * 
     * @param id 图片集合ID
     * @param status 状态
     * @return 是否成功
     */
    boolean updateStatus(Long id, Integer status);
    
    /**
     * 获取图片集合中的图片列表
     * 
     * @param current 当前页
     * @param size 每页大小
     * @param collectionId 图片集合ID
     * @return 分页结果
     */
    IPage<Image> getCollectionImages(Integer current, Integer size, Long collectionId);
    
    /**
     * 向图片集合中添加图片
     * 
     * @param collectionId 图片集合ID
     * @param imageId 图片ID
     * @return 是否成功
     */
    boolean addImageToCollection(ImageCollectionDTO collectionId, Long imageId);
    
    /**
     * 批量向图片集合中添加图片
     * 
     * @param collectionId 图片集合ID
     * @param imageIds 图片ID列表
     * @return 是否成功
     */
    boolean batchAddImagesToCollection(Long collectionId, List<Long> imageIds);
    
    /**
     * 从图片集合中移除图片
     * 
     * @param collectionId 图片集合ID
     * @param imageId 图片ID
     * @return 是否成功
     */
    boolean removeImageFromCollection(Long collectionId, Long imageId);
    
    /**
     * 批量从图片集合中移除图片
     * 
     * @param collectionId 图片集合ID
     * @param imageIds 图片ID列表
     * @return 是否成功
     */
    boolean batchRemoveImagesFromCollection(Long collectionId, List<Long> imageIds);
} 